/****************************************************************************************
 * 
 *  Author:         CFY
 *  Date:           2025-07-10
 *  Description:    消息队列模块
 *  Version:        V1.2
 * 
****************************************************************************************/
#ifndef MSG_QUEUE_H
#define MSG_QUEUE_H

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <unistd.h> 
#include <stdlib.h>

// 定义一个有参宏，出错就会打印错误信息
#define ERROR(x) do{ \
 perror(x); \
 printf("%s-%s-%d\n", __FILE__, __func__, __LINE__); \
}while(0)

// 用来生成唯一Key值的文件名路径

#define MSG_QUEUE_NAME  "msg_queue"
#define MSG_QUEUE_TYPE  1
#define MSG_QUEUE_PATH  "/tmp/ipc/msgqueue/"
#define MSGQ_PROJ_ID    'm' 


struct Msg
{
    long msg_type;
    char buf[1024];
};


// 初始化消息队列
int msg_queue_init(const char *name);
// 向消息队列中添加消息
int msg_queue_send(int id, const void *msg, size_t msgsz, int msgflg);
// 从消息队列中读取消息
int msg_queue_recv(int id, void *msg, size_t msgsz, long msgtyp, int msgflg);
// 删除消息队列
int msg_queue_del(int id);

#endif